#include<bits/stdc++.h>
using namespace std;
#define int long long
#define N 133333
int n,m;
int a[N],c[N],d[N][20],t,x[4],ans[505];
void solve1(){
    cin>>x[0]>>x[1]>>x[2]>>x[3];
    for(int i=0;i<N;i++)a[i]^=x[i&3];
    int lim=1,lkm=1;
    while(lkm<n)lkm>>=1;
    cout<<lkm<<endl;
    memset(ans,0,sizeof(ans));
    for(int i=0;i<lkm;i++){
        while(lim<i)lim>>=1;
        vector<int> v(lim,0);
        for(int j=0;j<=i;j++)v[j]=a[j];
        for(int j=i+1;j<lim;j++)v[j]=0;
        set<int> st;
        for(int j=0;j<lim;j++){
            if(j>i)a[i]=0x3f3f3f3f;
            vector<int> vv,vc;
            for(int k=0;k<lim;k++)vv.push_back(k);
            for(int R=0;(1<<R)<lim;R++){
                vc.clear();
                for(int g=0;g<vv.size()/2;g++){
                    int tp=d[g][R]+g*2,rd=(1^d[g][R])+g*2;
                    if(a[tp]>R)vc.push_back(tp);
                    else vc.push_back(rd);
                }
                vv=vc;
            }
            st.insert(vv[0]+1);
            if(j>i)a[i]=0x00000000;
        }
        for(int it:st)ans[i]+=it;
    }
    int res=0;
    for(int i=1;i<=m;i++)res^=(i*ans[c[i]]);
    cout<<res<<endl;
    for(int i=0;i<N;i++)a[i]^=x[i&3];
}
signed main(){
 //   ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
///    freopen("arena.in","r",stdin),freopen("arena.out","w",stdout);
    cin>>n>>m;
    for(int i=0;i<n;i++)cin>>a[i];
    for(int i=0;i<n;i++)cin>>c[i];
    string ds;
    int dd=0;
    while(1){
        cin>>ds;
        cout<<ds<<endl;
        for(int i=0;i<ds.size();i++)d[i][dd]=ds[i]-'0';
        dd++;
        if(ds.size()==1)break;
    }
    int t;
    cin>>t;
    while(t--)solve1();
}
